package com.rad.net.protocol.android.encoder;


/**
 * 类说明：额外参数类
 * 
 * @author xinhui.cheng
 * @date 2014-8-25
 * @version 1.0
 */
public class ExtraParam {

	private String key;
	private Object value;
	private RequestMethod method;
	/**
	 * 值的类型
	 */
	private Class<?> valueClass;

	/**
	 * 提交的方式
	 * {@link RequestMethod#GET}或者{@link RequestMethod#POST}
	 */
	public enum RequestMethod {
		GET, POST
	}

	/**
	 * 默认无参构造方法
	 */
	public ExtraParam() {

	}

	/**
	 * @param key 参数的键
	 * @param value 参数的值
	 * @param method 参数的提交方法
	 * @param valueClass value的类型
	 */
	public ExtraParam(String key, Object value, RequestMethod method,
			Class<?> valueClass) {
		this.key = key;
		this.value = value;
		this.method = method;
		this.valueClass = valueClass;
	}

	/**
	 * 获取键
	 * @return 键的名称
	 */
	public String getKey() {
		return key;
	}

	/**
	 * 设置键
	 * @param key 键的名称
	 */
	public void setKey(String key) {
		this.key = key;
	}

	/**
	 * 获取值
	 * @return 值
	 */
	public Object getValue() {
		return value;
	}

	/**
	 * 设置值
	 * @param value 值
	 */
	public void setValue(Object value) {
		this.value = value;
	}

	/**
	 * 获取提交的方法
	 * @return 提交的方法GET或POST
	 */
	public RequestMethod getMethod() {
		return method;
	}

	/**
	 * 设置提交的方法
	 * @param method 提交的方法
	 */
	public void setMethod(RequestMethod method) {
		this.method = method;
	}

	/**
	 * 获取参数的类型
	 * @return 参数类型
	 */
	public Class<?> getValueClass() {
		return valueClass;
	}

	/**
	 * 设置参数的类型
	 * @param valueClass 参数类型
	 */
	public void setValueClass(Class<?> valueClass) {
		this.valueClass = valueClass;
	}

}
